Міністерство освіти та науки України
Національний університет «Львівська політехніка»
кафедра САПР
ЗВІТ
до лабораторної роботи № 5
ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ.
АВТОМАТИЧНИЙ МОРФОЛОГІЧНИЙ АНАЛІЗ (частина1)
Виконав:
ст. гр. ПРЛ-1
Львів 2008
МЕТА РОБОТИ
Вивчення основ програмування на мові Python.
Ознайомлення з автоматичним морфологічним аналізом в NLTK.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
1.1 Вступ.
Виконуючи попередні лабораторні роботи слова оброблялися, як слова в загальному розумінні. Ми бачили що деякі розбіжності можна зменшити використовуючи нормалізацію, але подальші узагальнення не робилися. Розглядаючи частотний розподіл слова often фіксувалися слова які йдуть після цього слова і визначено що often часто виконує роль «модифікатора» дієслів. Дійсно, це слово належить до класу слів, які модифікують дієслова – adverbs. Для глибшого розуміння термінології розглянемо програму, яка для заданого слова знаходить інші слова які зустрічаються в тому самому контексті (listing1). Наприклад, для слова women будуть знайдені всі контексти в яких це слово зустрічається в корпусі і будуть знайдені інші слова які зустрічаються в такому контексті.
Коли запустити на виконання функцію dist_sim() для певного переліку слів то отримаємо інші слова, які мають подібне розповсюдження. Для слова women такими словами будуть переважно іменники, для слова bought –дієслова, для over – прийменники, для the – артиклі. В загальному для назв цих груп слів вживаються терміни – класи слів, лексичні категорії, частини мови.
Процес класифікації слів за їх приналежністю до частини мови і їх відповідне маркування називається морфологічним аналізом (tagging, POS tagging). Перелік тегів, який використовується для цієї специфічної задачі називається набором тегів. Наголос в цій та наступній лабораторних роботах буде зроблено на вивченні використання тегів і автоматичному морфологічному аналізі. Автоматичний морфологічний аналіз це дуже важливий, цінний етап опрацювання текстів природною мовою, який дозволяє отримати корисну інформацію. У попередньому прикладі було показано, як використовуються теги при аналізі корпусів – було отримано достовірну інформацію про частотний розподіл often на основі тегів сусідніх слів. Автоматичний морфологічний аналіз також допомагає передбачити поведінку попередньо невідомих слів. Наприклад, якщо зустрічається слово blogging можна передбачити що це дієслово, з основою blog і ймовірно воно вживається після допоміжного слова to be (he was blogging). Відомості про частини мови слів також використовуються при синтезі мови та її розпізнаванні. Наприклад wing/nn як в wind blew, вимовляється з коротким голосним, тоді як wind/vb, як в wind a clock вимовляється з довгим голосним. Можна навести і інші приклади в яких поведінка слів залежить чи вони належать до іменників чи до дієслів (contest, insult, present, rebel, suspect). Не знаючи, яка це частина мови не можна бути впевненому у вимові слова.
1.2 Загальна інформація про автоматичний морфологічний аналіз в NLTK
Деякі великі корпуси текстів такі як Броунівський(Brown) і частково Wall Street Journal містять морфологічну розмітку (позначенні частини мови всіх слів) і дозволяють працювати з цими даними. Файл морфологічно розміченого корпусу текстів переважно містить текст в наступному вигляді (Броунівський корпус).
1.2.1 Представлення тегів і читання морфологічно розміченого корпусу текстів.
За домовленістю в NLTK промарковані слова (tokens) представляються з використанням типу даних – кортеж. Кортежі подібні до списків, але їх неможна змінювати. До елементів кортежу можна отримати доступ використовуючи їх індекси.
Можна також коректно доступитись до морфологічно розмічених корпусів текстів безпосередньо засобами Python. Спочатку завантажуємо модуль читання (brown) Броунівського корпусу. Далі використовуємо одну з його функцій brown.tagged() для створення послідовності речень, кожне з яких є спи...